#ifndef SDRAGON_TOOLS_H_INCLUDED
#define SDRAGON_TOOLS_H_INCLUDED

#include "SDragon_GeneralIncludes.h"

// SDL_Surface Tools

enum SDR_ImageExtension
{
    SDR_IMAGE_BMP,
    SDR_IMAGE_CUR,
    SDR_IMAGE_GIF,
    SDR_IMAGE_ICO,
    SDR_IMAGE_JPG,
    SDR_IMAGE_LBM,
    SDR_IMAGE_PCX,
    SDR_IMAGE_PNG,
    SDR_IMAGE_PNM,
    SDR_IMAGE_TIF,
    SDR_IMAGE_WEBP,
    SDR_IMAGE_XCF,
    SDR_IMAGE_XPM,
    SDR_IMAGE_XV
};
typedef enum SDR_ImageExtension SDR_ImageExtension;

SDL_Surface * DLL_EXPORT SDR_Tools_newSurface(uint16_t width, uint16_t height);
SDL_Surface * DLL_EXPORT SDR_Tools_newRGBSurface(uint16_t width, uint16_t height, uint16_t red, uint16_t green, uint16_t blue);
void DLL_EXPORT SDR_Tools_fillSurface(SDL_Surface * surface, uint16_t red, uint16_t green, uint16_t blue);
void DLL_EXPORT SDR_Tools_fillRect(SDL_Surface * surface, SDL_Rect * rect, uint16_t red, uint16_t green, uint16_t blue);
void DLL_EXPORT SDR_Tools_setAlpha(SDL_Surface * surface, int alpha);
SDL_Surface * DLL_EXPORT SDR_Tools_copySurface(SDL_Surface * surface, SDL_Rect * rect);
SDL_Surface * DLL_EXPORT SDR_Tools_adaptSurface(SDL_Surface * screen, SDL_Surface * surface, SDL_Rect * coord, uint16_t center);
SDL_Surface * DLL_EXPORT SDR_Tools_loadImage(const char * file, SDR_ImageExtension * imageExtension);
SDL_Surface * DLL_EXPORT SDR_Tools_loadImageAs(const char * file, char * type);
void DLL_EXPORT SDR_Tools_blitSurface(SDL_Surface * surface, SDL_Rect * rect, SDL_Surface * surfaceDest, int16_t x, int16_t y);



// Event Tools
char DLL_EXPORT SDR_Tools_readChar(SDL_Event * event);
int DLL_EXPORT SDR_Tools_readInt(SDL_Event * event);

#endif // SDRAGON_TOOLS_H_INCLUDED
